Colin Walters [Thu, 3 Jun 2010 23:21:08 +0000 (19:21 -0400)]
Exit the overview when activating most items
In all the cases where we activate GNOME 2 UI, e.g. the shutdown
dialog, pop out of the overview. Otherwise, it's fairly broken
since you won't see the result of your action.
Adel Gadllah [Wed, 2 Jun 2010 16:38:31 +0000 (18:38 +0200)]
[overview] Fix dnd on mulit screen setups
Currently we don't get any drop events for dual screen modes with a screen
at the right, and behave weird by hardcoding the screen size and 0 as drag
edges.
Fix that by spawning the drop group over the whole stage and take the primary monitors position and size into account in _handleDragOver.
Florian Müllner [Tue, 25 May 2010 13:45:51 +0000 (15:45 +0200)]
[StEntry] Consider children when setting hover state
When hovering over the entry's ClutterText, the entry itself
currently receives a leave event and updates the hover state.
Apply the same logic as StWidget itself to treat children as
part of the entry.
Raphael Bosshard [Thu, 27 May 2010 07:31:46 +0000 (09:31 +0200)]
Add ISO week dates to the calendar
This patch adds ISO week dates to the calendar. Week dates are an
often used feature in business and government offices. Can be turned
on through gconf, off by default.
Florian Müllner [Sat, 8 May 2010 14:06:28 +0000 (16:06 +0200)]
[linearView] Zoom out when dragging an item from the dash
When dragging windows in linear view, the workspace zooms out to
allow moving the window to other workspaces. Enable the same
behaviour for items dragged from the dash.
Florian Müllner [Thu, 20 May 2010 14:13:27 +0000 (16:13 +0200)]
[linearView] Fix dnd to dash when zoomed out
While zoomed out, the workspaces view's drop target spans the entire
monitor to implement reactive screen edges. When a drop event is not
handled by the view, an attempt is made to pass it on down the stack,
but it doesn't work properly. Fix it by iterating the target's parents
as well.
Also improve the code which translates dnd coordinates to target
positions.
Adel Gadllah [Wed, 26 May 2010 20:14:00 +0000 (22:14 +0200)]
[chrome] Ignore fullscreen flag when in overview
Ignore the fullscreen flag when we are in the overview,
otherwise we might up not showing actors like the panel even though
they have visibleInOverview set to true.
Owen W. Taylor [Mon, 24 May 2010 14:27:13 +0000 (10:27 -0400)]
[perf] replace frame count with accurately computed frame rate
Compute a frame rate for the period between:
- User sees first frame of overview animation
- User sees fully zoomed-out overview
And replace the current Frames count metrics with this. The
previous frame count metrics were actually over the period from
the start of the animation until the window labels finished
animating in; here we are careful to look at a more restricted
period.
Owen W. Taylor [Mon, 24 May 2010 13:52:25 +0000 (09:52 -0400)]
[perf] Add glx.swapComplete event
Add an event when we receive an event on buffer swap completion; we'll
only get this if Clutter is using the INTEL_swap_event GLX extension,
but it's useful to see the actual timing of video frames.
The recorded event includes the actual timestamp of the swap, since
we are given that in the GLX event - on my system it tends to be
consistently 80-100us before we log the event, but if something was
going wrong in event handling (too much synchronous work), then that
could could show up as a longer delay.
Owen W. Taylor [Mon, 24 May 2010 13:48:41 +0000 (09:48 -0400)]
[perf] add tweener.framePrepareStart/Done events
Add events when we start preparing a frame and finish preparing
a frame. (In addition to measuring property-updating overhead, this allows
us to see the interval between finishing preparing a frame and starting
painting the frame, which is the relayout time.)
Florian Müllner [Thu, 20 May 2010 14:44:45 +0000 (16:44 +0200)]
[dnd] Optionally restore the drag actor
Currently, the drag and drop code assumes that on a successful drop
the target will either consume the drag actor or that it is otherwise
OK to destroy the actor.
As the drag behavior for window preview was changed, dropping a preview
on the dash now results in the preview being swallowed - to fix, add an
option to restore the actor in case of a successful drop as well.
Florian Müllner [Wed, 12 May 2010 21:30:14 +0000 (23:30 +0200)]
[panel] Hide application menu in overview
The activities overview is not a place where we expect users to
interact with a specific application, so showing the application
menu there is misleading.
Florian Müllner [Wed, 19 May 2010 13:09:19 +0000 (15:09 +0200)]
[StThemeNode] Make shadows respect paint opacity
Currently shadows disregard the overall opacity, so e.g. setting
an ancestor's opacity does not effect the shadow. Fix this by
deferring the setting of the shadow's color until it is painted.
Also move duplicated drawing code from st_theme_node_paint() into
its own function.
Florian Müllner [Mon, 17 May 2010 12:03:47 +0000 (14:03 +0200)]
[clockPreferences] Fix translations
The preference dialog for the panel clock does not set its gettext
domain, so it's not translated even if though translations are
already available.
Fix by setting the domain in the GtkBuilder file and binding the
domain to the locale directory.
Florian Müllner [Mon, 22 Mar 2010 00:39:49 +0000 (01:39 +0100)]
Use St.Group where appropriate
There are some places in the code where we use both fixed positioning
and CSS. Currently we use either a combination of ClutterGroup and StBin,
or we uses StBoxLayout with fixed positioning. Replace those with the new
StGroup container.
Florian Müllner [Fri, 14 May 2010 14:07:19 +0000 (16:07 +0200)]
[StGroup] Respect CSS sizing in size requests
Currently the size of an StGroup depends exclusively on the group's
children - it should be possible to override this behaviour with
fixed values in the CSS.
Colin Walters [Tue, 25 May 2010 14:21:22 +0000 (10:21 -0400)]
[panel] Ellipsize long application titles, don't push clock around
First, simply set the ellipsize flag on the application menu labels.
Next, rework how we lay out the panel components so that the center
box is always centered and constrains the left and right, rather
than pushing it around.
Previously, as part of making the shell not obviously explode if
one had a lot of tray icons, we allowed them to push the clock over.
Instead, go back to just failing in this case; we need to exile legacy
tray icons, not be slightly less ugly.
Adel Gadllah [Mon, 24 May 2010 14:52:38 +0000 (16:52 +0200)]
[appSwitcher] Remove unneeded workaround
SwitcherList.actor is no longer a St.BoxLayout but a
GenericContainer now, so the hack in AppSwitcher._getPreferredHeight is no
longer needed (it is called with the correct width now).
Owen W. Taylor [Mon, 24 May 2010 04:08:00 +0000 (00:08 -0400)]
[perf] Fix factor of ten in seconds => microseconds conversion
Typo: 10000000 instead of 1000000 for a million. Also, use
G_INT64_CONSTANT instead of LL for a 64-bit constant, to avoid
extraneous 128-bit arithmetic on 64-bit machines.
Adel Gadllah [Fri, 21 May 2010 21:25:41 +0000 (23:25 +0200)]
Call shell_global_maybe_gc() when no work is being done
Call shell_global_maybe_gc when idle when no other work is ongoing to free
up memory and improve performance by preventing the GC to kick in at less
convenient times.
Owen W. Taylor [Fri, 21 May 2010 12:45:14 +0000 (08:45 -0400)]
[perf] Add --perf-upload option to gnome-shell
Add a command line option to upload the generated performance report
to a web service. The options for the upload (url, system name, secret
key) are read from ~/.config/gnome-shell/perf.ini.
Owen W. Taylor [Mon, 17 May 2010 18:04:09 +0000 (14:04 -0400)]
Add units to metrics definitions
Switch from having separate METRICS and METRIC_DESCRIPTIONS objects
in a perf module to a single METRICS array. This is done so the
perf module can define the units for each metric.
In addition to improving the output in the web interface, the purpose
of having units is to give some clue about how to pick from multiple
values from different runs. In particular, with the assumption that
"noise" on the system will increase run times, for time values we want
to pick the smallest values, while for "rate" values, we want to pick
the largest value.
Owen W. Taylor [Wed, 12 May 2010 21:24:52 +0000 (17:24 -0400)]
Dump a complete report from a performance run, as JSON
When SHELL_PERF_OUTPUT is set, instead of just dumping out the metrics, dump
a more complete report with:
- Event descriptions
- Metric descriptions and value
- Event log
Helper functions shell_perf_log_dump_events() and shell_perf_log_dump_log()
are added to ShellPerfLog to support this. The gnome-shell wrapper is adapted
to deal with the changed report format.
Owen W. Taylor [Tue, 11 May 2010 22:08:50 +0000 (18:08 -0400)]
Allow running multiple iterations of a performance test
Add gnome-shell options:
--perf-iters=ITERS"
Numbers of iterations of performance module to run
--perf-warmup
Run a dry run before performance tests
Make a successful run of a performance test return 0 not non-zero,
and handle the difference between that and a 0-exit in normal
usage (meaning replaced) in the wrapper.
Owen W. Taylor [Tue, 11 May 2010 20:43:38 +0000 (16:43 -0400)]
Move shell-running machinery to a function
Move the code that starts gnome-shell and waits for it to exit
to a function in preparation for running it multiple times when
doing iterations of a performance test.
Owen W. Taylor [Tue, 11 May 2010 19:48:47 +0000 (15:48 -0400)]
Add "statistics" functionality to ShellPerfLog
Add a facility for defining and recording numeric statistics
as performance events
shell_perf_log_define_statistic()
Define a statistic and the corresponding event type
shell_perf_log_update_statistic_[ix]() -
Update the stored statistic value
shell_perf_log_add_statistics_callback()
Add a function called before collecting statistics
shell_perf_collect_statistics()
Update statistics and record events for them
In addition to the explicit collection, statistics are
recorded at a periodic interval (currently 5s)
Owen W. Taylor [Sun, 9 May 2010 17:42:35 +0000 (13:42 -0400)]
Add a facility for automated performance measurement
We want to be able to summarize the behavior of the shell's
performance in a series of "metrics", like the latency between
clicking on the Activities button and seeing a response.
This patch adds the ability to create a script under perf/
in a special format that automates a series of actions in the
shell, writing events to the performance log, then collects
statistics as the log as replayed and turns them into a set
of metrics.
The script is then executed by running as gnome-shell
--perf=<script>.
The 'core' script which is added here will be the primary
performance measurement script that we use for shell performance
regression testing; right now it has a couple of placeholder
metrics.
Owen W. Taylor [Sun, 9 May 2010 17:17:13 +0000 (13:17 -0400)]
Add ShellPerfLog
ShellPerfLog provides a way for different parts of the code to
record information for subsequent analysis and interactive
exploration. Events exist of a timestamp, an event ID, and
arguments to the event.
Owen W. Taylor [Sun, 9 May 2010 04:34:15 +0000 (00:34 -0400)]
Add "leisure function" capability
To support scheduling performance-measurement scripts that want to run
a number of actions in series, add shell_global_run_at_leisure() to run
a callback when all work is finished.
The initial implementation of this is not that accurate: we track
business in Tweener.js via new shell_global_begin_work(),
shell_global_end_work() functions, and we also handle the case
where the main loop is continually busy.
Dan Winship [Wed, 19 May 2010 17:50:39 +0000 (13:50 -0400)]
[panel] fix nested-queue_relayout warning in menus
We don't need to reposition the menu every time its button is
allocated; we can just stick it in the right place when we pop it up
(which is guaranteed to not be during a layout cycle).
(This means that now we won't reposition the menu if the button
moves/resizes while the menu is already popped up, but it's not clear
that we'd want it to anyway, since that could easily result in the
user selecting the wrong item, etc.)
Also, we don't need to override the menu's width any more, so remove
that.
Colin Walters [Wed, 12 May 2010 21:07:41 +0000 (17:07 -0400)]
Combination of updates to match design suggestions
* Align the icons inside text
* Add application name to Quit
* Fade in/out the menu
* Drop some padding around the edges
* Add padding around the separators
* Use a gradient for separators
Colin Walters [Tue, 11 May 2010 15:55:33 +0000 (11:55 -0400)]
Rework compare to take into account closed windows
The API docs for ShellApp claimed it sorted by the last time the
user interacted with the app, but if one closed a window, then
we would fall back to comparing against a possibly much older
timestamp from another window. Fix this by just keeping a
user time per app.
Also clean up the comparison function to explicitly check the state
instead of deferring to the window list.
Colin Walters [Thu, 6 May 2010 17:36:01 +0000 (13:36 -0400)]
Allow selection of individual windows
Per design discussion, change things back so that when choosing
an individual window, we raise only that window. However
when we select an application, raise all windows.
A behavioral change required to clearly differentiate these
is that when the window thumbnail list is popped up, it no
longer has the first window selected by default. Therefore
the user has to explicitly press the down arrow or use the
mouse to enter individual window selection mode.
Colin Walters [Tue, 11 May 2010 14:35:27 +0000 (10:35 -0400)]
Create ShellGlobal later to avoid connecting to X during build
The ShellGlobal initialization performs several actions like connecting
to the X server, ensuring directories exist, etc., that are problematic
because we were creating the object even when running the binary for
introspection scanning. During compilation we may not even have X11
available in e.g. autobuilder type environments, and it's just a
bad idea to connect even if we do.
Avoid this by deferring creation of the ShellGlobal object
until the plugin is actually started.
Now that we're initializing things later, remove the connection to
screen changes, and initialize cached ShellGlobal state at the point
when the plugin is set. The root pixmap actor is now sized initially
on creation too. Instead of relying on screen-size-changed being
emitted on startup, explicitly invoke _relayout().
Dan Winship [Fri, 16 Apr 2010 21:24:34 +0000 (17:24 -0400)]
TelepathyClient: show notifications for presence changes
Fetch the names of the user's "subscribed" contacts, and use the
SimplePresence interface to watch for available/away/busy/etc messages
and create notifications for them.
Currently we display notifications when switching between "available"
and "offline"/"extended away", but when switching between "available"
and "away"/"busy" we just add the information to the chat window
without popping up a notification, to avoid spamming the user with
"Bob's screensaver activated" messages.
Don't use double quotes for things that don't need to be translated
This is our convention.
The only exceptions are double quotes for words in comments that give
them a special meaning (though beware that these quotes are not truly
necessary most of the time) and double quotes that need to be a part
of the output string.
Don't add a new workspace when the maximum workspaces limit is reached
It was previously possible to add a workspace above the maximum workspaces
limit by dragging an item to the "add workspace" button or using the middle
mouse button click.
Provide the user with feedback in the info bar when it is not possible to create
a new workspace or remove the current workspace.
Make the workspace added on the middle mouse button click active
This ensures that we launch the new instance of an application on the newly
added workspace in the grid view, in which we don't make the newly added
workspace active by default.
Colin Walters [Wed, 12 May 2010 20:50:36 +0000 (16:50 -0400)]
Don't treat min-width and min-height as a fixed size
I have no idea why there existed code that if we saw e.g. min-width
without a width, we assigned min-width to ->width, thus effectively
treating it as a maximum.
Add a new way to open an application on a new workspace
Allow using the middle mouse button to open a new instance of an
application on a new workspace. The middle mouse button function
can be achieved by clicking the left and right mouse buttons
together with a two buttons mouse or holding Ctrl while clicking
with a single button mouse.
Dan Winship [Tue, 11 May 2010 18:46:26 +0000 (14:46 -0400)]
St: fix allocation to not use both wfh and hfw
Passing an explicit width in the wfh case or a height in the hfw case
messes up the request caching, and confuses actors that assume they
won't be called with an explicit width/height unless they're being
allocated along the other axis.
Adds the ability to create one or more zoom regions that show magnified or
enhanced views of the desktop. The magnifier provides options for:
* magnification factor,
* four mouse tracking modes common to screen magnifiers,
* positioning the magnified view in one of four screen location, or full screen,
* crosshairs to accentuate the position of the mouse,
* user preferences persistence via GConf (schemas in
.../data/gnome-shell.schemas).
* a DBus API to allow other processes to drive the magnifier as a service.